package com.situ.mall.controller.back;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

import org.apache.commons.io.FilenameUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.situ.mall.entity.Result;
import com.situ.mall.utils.ImageServerUtil;
import com.situ.mall.utils.ImageServerUtil.EnumImageServer;
import com.situ.mall.utils.QiniuUtil;

@Controller
@RequestMapping("/upload")
public class UploadController {

	@RequestMapping("/uploadImg.action")
	@ResponseBody
	public Result uploadImg(MultipartFile file) throws IOException {
		
		String newFileName ="";
		
		//判断ImageServerUtil，是传本地OR七牛。执行对应上传方法
		if (ImageServerUtil.IMG_SERVER == EnumImageServer.LOCAL) { //本地方法封装在下面
			System.out.println("执行了：上传本地方法");
			newFileName = uploadToLocal(file); 
		}else if (ImageServerUtil.IMG_SERVER == EnumImageServer.QINIU) { //七牛方法封装在QiniuUtil
			System.out.println("执行了：上传七牛方法");
			newFileName = QiniuUtil.uploadImage(file.getBytes());
		}
		
		return Result.success("上传成功", newFileName);
	}
	
	public String uploadToLocal(MultipartFile file) {
		// 为了防止文件重名（重名的文件会被覆盖），所以要生成一个不重复的唯一的名字
		// faf007c466614101afe2fd5ddec5bf55
		String name = UUID.randomUUID().toString().replace("-", "");
		// 拿到浏览器传过来文件的名字，但是我们不用这个名字，只是要获取他的后缀
		// 例如：a.png  
		String fileName = file.getOriginalFilename();
		// 获得文件名字后缀: png
		String extension = FilenameUtils.getExtension(fileName);
		// faf007c466614101afe2fd5ddec5bf55.png
		String newFileName = name + "." + extension;
		
		// 把这个文件上传到虚拟路径指定的位置：D:\pic下边
		String filePath = "D:\\pic\\" + newFileName;
		try {
			file.transferTo(new File(filePath));
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		// newFileNmae要存储到数据库product表的main_image字段,所以这个文件的名字
		// 要放到product_insert.jsp的form表单里面
		return newFileName;
	}
	
	
	public static void main(String[] args) {
		String uuid = UUID.randomUUID().toString().replace("-", "");
		System.out.println(uuid);// faf007c466614101afe2fd5ddec5bf55
	}
}
